﻿select * from StuInfo;
select * from StuScore;
--变量:局部变量，全局变量
--局部变量：@
--全局变量:@@

--选择结构：单分支:if  双分支:if-else, 嵌套if
--if 条件  begin 语句 end


--查询S2002总分有没有超过250： 如果没有超过， 打印 不合格  超过250 打印合格
declare @tscore int

select @tscore = Chinese+English+Math from StuScore where StuID='S2001'

print @tscore

if @tscore>=240
begin
	if @tscore >=245
	begin
		print '优秀'
	end
	else
	begin
		print '合格'
	end
end

else
begin
	print '不合格'
end



--判断男生平均成绩是否高于女生，如果男生平均成绩比女生高，输出男生中的第一名， 否则输出女生中的第一名
--查出男生，女生的平均成绩


declare @maleScore float--男生平均成绩
declare @femaleScore float--女生
declare @max int   --最高分

select @maleScore = avg(chinese+english+math) from StuScore where StuSex='男'  --男生平均成绩
select @femaleScore = avg(chinese+english+math) from StuScore where StuSex='女'  --女生

if @maleScore>@femaleScore
begin
	print '男生平均成绩高'
	--男生第一名
	--max
	--select @max =  max(chinese+english+math) from StuScore where StuSex='男'
	--print '男生最高分'+@max
	select top 1 * from StuScore where Stusex = '男' order by (English+Chinese+Math) desc
end
else
begin
	print '女生平均成绩高'
	--select @max = max(chinese+english+math) from StuScore where StuSex='女'
	--print '女生最高分'+@max

	select top 1 * from StuScore where StuSex='女' order by (English+Chinese+Math) desc
end






--循环： while   break(跳出循环)、continue(跳出当前循环)
--Oracle： LOOP while...LOOP, FOR..LOOP
--mysql： repeat
--逻辑控制


--循环打印1-10
--声明+赋值
declare @a int = 1
while (@a <= 10)
begin
	print @a
	set @a = @a + 1
end


--九九乘法表 : 双层循环
declare @i int = 1

while @i<=9
begin
	declare @j int = 1
	declare @result varchar(500) = ''
	while @j<=@i
	begin
	--显示
	--不会自动转换类型,需要强转
	--set @result = @result + convert(varchar(2), @i) + ' * ' + convert(varchar(2), @j) + ' = '+ convert(varchar(2),@i*@j) + char(9)
	--cast
	set @result = @result + cast(@i as varchar(1)) + ' * ' + cast(@j as varchar(1)) + ' = '+ cast(@i*@j as varchar(1)) + char(9)
	--控制J变量
		set @j =@j + 1	
	end
	print @result
	set @i = @i + 1
end







--练习:在 StuScore 表中如果学生的平均成绩没有达到80分，便给每位同学的数学成绩加1分，然后再次判断平均成绩是否达到80分，
--否则继续加分，这样反复加分，直到其平均成绩超过80分




--逻辑控制 case when
--java: switch: case default

--练习：将StuScore成绩表中的学生成绩用五分制显示。
--​				5分：80分以上
--​				4分：60～79分
--​				3分：40～59分
--​				2分：20～39分
--​				1分：0～19分
select stuName,stuID,english,
case 
 when english>=80 then '5分'
 when english>=60 then '4分'
 when english>=40 then '3分'
 when english>=20 then '2分'
 when english>=0 then '1分'
 else '0分'
end '5分制'
from StuScore
inner join StuInfo on StuScore.StuID = StuInfo.StuNo